import { reqLogin, reqGetUserInfo } from '@/api/user'
import { constantRoutes, resetRouter } from '@/router'
import { getToken, setToken, removeToken } from '@/utils/auth'
// 清除后期自己来写
export default {
  namespaced: true,
  state: {
    token: getToken() || '',
    userInfo: {}, // 用户信息
    routes: constantRoutes // 使用vuex维护路由规则   数组
  },
  mutations: {
    // 设置token的方法
    setToken(state, payload) {
      state.token = payload
      // 存储token到本地
      setToken(payload)
    },
    // 设置用户信息
    setInfo(state, payload) {
      state.userInfo = payload
    },
    // 退出  清除token 和用户信息
    logout(state) {
      state.token = ''
      state.userInfo = {}
      removeToken()
      // 重置路由    (跳转)
      resetRouter() // 管理退出在登陆普通员工左侧展示所有权限 其实没有权限 但是展示有(也就是有所有权限菜单)
      state.router = constantRoutes
    },
    // 添加routes数据
    addFilterRoutes(state, routes) {
      // 左侧展示  （重复·数据）
      // state.routes.push(...routes)  //问题：登录退出在登录左侧会重复数据  所以每次登录退出就赋值
      state.routes = [...constantRoutes, ...routes] // 视觉上感觉没有其实还在 （还可以访问其他页面规则还在）
    }
  },
  actions: {
    // 登录action
    async login({ commit }, data) {
      // console.log('发送登录的请求得到token 触发mutations')
      const res = await reqLogin(data)
      // console.log(res.data)
      commit('setToken', res.data)
    },

    // 获取用户信息
    async getInfo({ commit }) {
      const { data } = await reqGetUserInfo()
      // console.log(data)
      commit('setInfo', data)
      return data // 将个人信息返回  处理权限
    }
  }
}
